/*********************************** 
声明：仅个人兴趣爱好使用，更多功能请自行扩展

使用方法：
1.自行安装alist,https://alist.nn.ci/zh/
2.配置alist游客访问模式
3.添加存储，父目录取一个有代表型的名字，比如：ababab
4.添加资源，比如：/ababab/电视剧/韩剧/测试剧/36.mp4
5.SK后台-APP管理-基础管理-直连JSON特性，添加特征值：ababab
6.SK后台-JSON解析，特征值填写ababab，解析地址填写此服务部署的ip+端口，例如：http://127.0.0.1:7778/getalistjson?url=

如何启动服务？
1.根据提示信息修改config中的字段
2.和SK后端启动方式一致，使用pm2启动，启动文件为index.js
***************************************/


// alist获取播放地址
var express = require('express');
var app = express();
var request = require('request')

const config = {
    alist_protocol: 'http://', //http:// 或者 https://
    alist_host: 'alist.baidu.com', //部署的alist地址
    json_path: '/getalistjson', // json解析路径
    port: 7778, // 服务端口
}

const alist_api = `${config.alist_protocol}${config.alist_host}/api/fs/get`;
app.get(config.json_path, function (req, res) {
    const url = req.originalUrl.split(config.json_path + "?url=")[1]
    try {
        request({
            url: alist_api,
            method: "POST",
            json: true,
            headers: {
                "Content-Type": "application/json;",
                "Host": config.alist_host,
                "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36 Edg/109.0.1518.69"
            },
            body: {
                password: '',
                path: decodeURIComponent(url)
            }
        }, (err, rep, body) => {
            if (err) {
                console.log(err)
                return res.send("{code: 500}");
            }
            if (!err && rep.statusCode == 200) { // 请求成功
                console.log(body)
                if (body.code == 200 && !body.data.is_dir) {
                    return res.send({
                        code: 200,
                        url: body.data.raw_url
                    });
                } else {
                    return res.send("{code: 501}");
                }
            }
        })
    } catch (e) {
        console.log(e)
        return res.send("{code: 502}");
    }
})

var server = app.listen(config.port, function () {
    var host = server.address().address
    var port = server.address().port
    console.log("应用实例，访问地址为 http://%s:%s", host, port)
})